home *** CD-ROM | disk | FTP | other *** search
GW-BASIC | 1985-06-04 | 10.3 KB | 327 lines |
- 10 REM **** CPACUI ****
- 100 CLOSE
- 110 T1$="Project: \ \ File: \ \"
- 120 T2$="Time Period Units: \ \ Activities: ### Start Date: \ \"
- 130 H1$="ACT ACTIVITY FROM TO EST ACT REPORT % SUBCONTRACTOR ACTIVITY"
- 140 H2$="POS DESCRIPTION NODE NODE TIME TIME FINISH DUN CODE NAME COST "
- 150 H3$="--- ------------------ ---- ---- ---- ---- ------ --- ------------- ---------"
- 160 S$="### \ \ #### #### #### #### ###### ### ## \ \ #########"
- 170 W1$="Enter FROM Node ____ "
- 180 W2$="Enter finish date(MMDDYY) or 0 ______"
- 190 W3$="Enter percent complete (###) ___ "
- 200 W4$="Enter Subcontractor/Comment Code __ "
- 210 W5$="Enter activity cost ($) _________"
- 220 W6$=" ## \ \ ## \ \ ## \ \"
- 230 W7$="Enter TO Node ____ "
- 240 W8$="Enter Estimated Time ____ "
- 250 W9$="____________________________________ "
- 260 DEFINT B-Z:DEFSNG A,C
- 270 KEY OFF
- 280 DIM R3(500),B(500)
- 290 DIM S(500),F(500),D$(500),D(500),A6(500),S$(48)
- 300 DIM C(500),O2(500),P(500)
- 320 GOSUB 2990 'READ INPUT FILE
- 330 GOSUB 2880 'READ SUBCONTRACTOR FILE
- 340 FOR I=1 TO N:P(I)=I:NEXT
- 350 GOTO 370
- 360 F=2 'REMINDER TO FILE CHANGES
- 370 PRINT
- 380 GOSUB 3250
- 390 LOCATE 5,25:PRINT "INPUT MODIFICATION MENU"
- 400 PRINT:T1=19
- 410 PRINT TAB(T1);"EXIT MODIFICATION",TAB(50);" - 0"
- 420 PRINT TAB(T1);"CHANGE TITLE",TAB(50);" - 1"
- 430 PRINT TAB(T1);"INPUT/ADD ACTIVITIES",TAB(50);" - 2"
- 440 PRINT TAB(T1);"DELETE ACTIVITIES",TAB(50);" - 3"
- 450 PRINT TAB(T1);"CHANGE ACTIVITY DATA",TAB(50);" - 4"
- 460 PRINT TAB(T1);"CHANGE TIME PERIOD UNITS";TAB(50);" - 5"
- 470 PRINT TAB(T1);"CHANGE START DATE",TAB(50);" - 6"
- 480 PRINT TAB(T1);"INSPECT INPUT ",TAB(50);" - 7"
- 490 PRINT TAB(T1);"CHECK NODE CONNECTIONS",TAB(50);" - 8 "
- 500 PRINT TAB(T1);"SORT AND FILE INPUT",TAB(50);" - 9 "
- 510 PRINT TAB(T1);"FILE CHANGES",TAB(50);" -10"
- 520 PRINT
- 530 IF F=2 THEN PRINT " **** BE SURE TO FILE ANY CHANGES IF YOU WANT THEM ****"
- 540 PRINT
- 550 INPUT "Enter number of the modification desired ",N6
- 560 IF N6>10 THEN BEEP:GOTO 550
- 570 IF N6=0 AND F=2 THEN INPUT "Last changes were not filed - Are you sure (Y/N) ",Q$ ELSE 590
- 580 IF LEFT$(Q$,1)<>"Y" THEN 550
- 590 IF N6=0 THEN CHAIN "CPAMENU"
- 600 ON N6 GOTO 610,650,1010,1180,1650,1740,1770,1940,2650,1860
- 610 REM CHANGE TITLE
- 620 PRINT " **** PRESENT TITLE IS ";P$
- 630 INPUT "Enter new title ";P$
- 640 GOTO 360
- 650 I=N
- 660 VT=42:GOSUB 3250
- 670 LOCATE 6,VT:PRINT "Enter Description"
- 680 PRINT TAB(VT);W9$:PRINT:PRINT TAB(VT);W1$:PRINT TAB(VT);W7$:PRINT TAB(VT);W8$:PRINT:TB=7
- 690 PRINT TAB(VT);W2$:PRINT:PRINT TAB(VT);W3$:PRINT TAB(VT);W4$:PRINT TAB(VT);W5$:GOSUB 3300
- 700 COLOR 15,0
- 710 I=I+1:TB=7
- 720 LOCATE 4,50:PRINT "**** ACTIVITY";I;"****"
- 730 LOCATE TB,VT:PRINT "______________________________________"
- 740 LOCATE TB,VT:INPUT D$(I)
- 750 IF D$(I)="Q" OR D$(I)="QUIT" THEN N=I-1:GOTO 990
- 760 LOCATE TB+2,VT+15:PRINT "_____"
- 770 LOCATE TB+2,VT+15:INPUT S(I)
- 780 LOCATE TB+3,VT+15:PRINT "_____"
- 790 LOCATE TB+3,VT+15:INPUT F(I)
- 800 D(I)=O2(I)
- 810 IF F(I)<=S(I) THEN BEEP:GOTO 770
- 820 LOCATE TB+4,VT+21:PRINT "_____"
- 830 LOCATE TB+4,VT+21:INPUT O2(I)
- 840 D(I)=O2(I)
- 850 LOCATE TB+6,VT+30:PRINT "________"
- 860 LOCATE TB+6,VT+30:INPUT A6(I)
- 870 IF A6(I)<9999 AND A6(I)<>0 THEN 860
- 880 TB=TB+1
- 890 LOCATE TB+7,VT+28:PRINT "_____"
- 900 LOCATE TB+7,VT+28:INPUT R3(I)
- 910 LOCATE TB+8,VT+32:PRINT "____"
- 920 LOCATE TB+8,VT+32:INPUT B(I)
- 930 LOCATE TB+9,VT+23:PRINT "___________"
- 940 LOCATE TB+9,VT+23:INPUT C(I)
- 950 LOCATE TB+11,VT:INPUT "Enter more activities (Y/N) ";Q$
- 960 IF LEFT$(Q$,1)="N" THEN 980
- 970 GOTO 710
- 980 N=I
- 990 COLOR 7,0
- 1000 GOTO 360
- 1010 PRINT "**** When deleting, start with the last activity first for best results ****"
- 1020 GOSUB 2560
- 1030 INPUT "Enter position number of the activity to delete - 0 to exit ";X
- 1040 IF X>N THEN PRINT "INVALID RESPONSE":BEEP:GOTO 1030
- 1050 IF X=0 THEN 360
- 1060 IF N>50 THEN PRINT "THINKING . . ."
- 1070 FOR I=X TO N-1
- 1080 D$(I)=D$(I+1):S(I)=S(I+1):F(I)=F(I+1):O2(I)=O2(I+1):D(I)=D(I+1):A6(I)=A6(I+1):R3(I)=R3(I+1):C(I)=C(I+1):B(I)=B(I+1)
- 1090 NEXT
- 1100 PRINT "**** ACTIVITY";X;"DELETED-ALL FOLLOWING ACTIVITY POSITIONS ADJUSTED ****"
- 1110 N=N-1
- 1120 GOTO 1020
- 1130 INPUT "Change More Activities (Y/N/#) ",Q$
- 1140 IF LEFT$(Q$,1)="N" THEN 360
- 1150 IF LEFT$(Q$,1)="Y" THEN 1180
- 1160 J=VAL(Q$):GOTO 1200
- 1170 REM CHANGE ACTIVITY DATA
- 1180 GOSUB 2530
- 1190 INPUT "Enter pointer to activity to change ",J
- 1200 IF J=0 THEN 1130
- 1210 PRINT D$(J);S(J);F(J);O2(J);D(J);A6(J);R3(J);B(J);S$(B(J));C(J)
- 1220 PRINT "Change DESC,FROM NODE,TO NODE,TIME,FINDAT, % ,SUBCODE,COST,QUIT "
- 1230 INPUT "Enter ( D , FN , TN , T , F , % , S , C ,or Q) ",Q$
- 1240 IF Q$="Q" THEN 1130
- 1250 IF Q$="D" THEN 1580
- 1260 IF Q$="FN" THEN 1610
- 1270 IF Q$="TN" THEN 1630
- 1280 IF Q$="T" THEN 1550
- 1290 IF Q$="F" THEN 1520
- 1300 IF Q$="%" THEN 1400
- 1310 IF Q$="S" THEN 1360
- 1320 IF Q$<>"C" THEN BEEP:GOTO 1230
- 1330 INPUT "Enter new activity cost ";A4
- 1340 IF A4>32000 THEN BEEP:PRINT "**** ACTIVITY COSTS MAY NOT EXCEED $32,000 EACH ****":GOTO 1330 ELSE C(J)=INT(A4)
- 1350 GOTO 1210
- 1360 GOSUB 3260
- 1370 INPUT "Enter new code ";B(J)
- 1380 REM HIGHLIGHT SUB FROM CPASBC
- 1390 GOTO 1210
- 1400 PRINT "**** PRESENTLY";R3(J);"PERCENT COMPLETE =$";INT((R3(J)/100)*C(J));"EXPENDED TO DATE ****"
- 1410 INPUT "Enter Percent complete, Additional amount or new Total expended (P/A/T) ";Q$
- 1420 IF Q$="" OR Q$="P" THEN 1500
- 1430 IF Q$="A" THEN 1470
- 1440 IF Q$<>"T" THEN BEEP:GOTO 1410 ELSE INPUT "Enter Total expended to date ";A4
- 1450 IF A4>32000 THEN BEEP:PRINT "**** TOO MUCH ****":GOTO 1450
- 1460 IF C(J)=0 THEN R3(J)=100:C(J)=A4 ELSE R3(J)=INT(A4/C(J)*100)
- 1465 GOTO 1485
- 1470 INPUT "Enter additional amount ";A4:IF A4>32000 THEN BEEP:PRINT "**** TOO MUCH ****":GOTO 1470
- 1480 IF C(J)=0 THEN R3(J)=100:C(J)=A4 ELSE R3(J)=INT(((R3(J)/100)*C(J)+A4)/C(J)*100)
- 1485 PRINT "**** NEW PERCENT COMPLETE =";R3(J);"****"
- 1490 GOTO 1210
- 1500 INPUT "Enter new percent complete ";R3(J)
- 1510 GOTO 1210
- 1520 INPUT "Enter new Report Finish date (MMDDYY) ";A6(J)
- 1530 IF A6(J) <9999 AND A6(J) <> 0 THEN 1520
- 1540 GOTO 1210
- 1550 INPUT "Enter the new estimated time ";O2(J)
- 1560 D(J)=O2(J)
- 1570 GOTO 1210
- 1580 PRINT TAB(30);"|";SPC(38);"|"
- 1590 INPUT "Enter new activity description ";D$(J)
- 1600 GOTO 1210
- 1610 INPUT "Enter the new FROM node ";S(J)
- 1620 GOTO 1210
- 1630 INPUT "Enter the new TO node ";F(J)
- 1640 GOTO 1210
- 1650 REM CHANGE TIME PERIOD UNITS
- 1660 PRINT " **** PRESENT TIME UNITS ARE ";T6$;"****"
- 1670 INPUT "Enter new time units ",T6$
- 1680 IF T6$="DAYS" THEN INPUT "Working, Calendar, or Numbers only (W/C/N) ",Q$ ELSE 1710
- 1690 IF LEFT$(Q$,1)="W" THEN T6$="WORKING DAYS"
- 1700 IF LEFT$(Q$,1)="C" THEN T6$="CALENDAR DAYS"
- 1710 IF LEFT$(T6$,3)="WOR" THEN PRINT " **** NOW ELIGIBLE FOR HOLIDAY OMISSION ****"
- 1720 IF LEFT$(T6$,3)="CAL" THEN PRINT " **** PCPM WILL OMIT HOLIDAYS BUT NOT WEEKENDS ****"
- 1730 FOR I=1 TO 500:KR$="KRISTY":NEXT :GOTO 360
- 1740 PRINT " **** Present start date is ";DA$;" ****"
- 1750 INPUT " Enter new start date in MMDDYY format ";DA$
- 1760 GOTO 360
- 1770 REM INSPECT INPUT FILE
- 1780 PRINT " **** PROJECT TITLE :";P$
- 1790 PRINT " TIME UNITS :";T6$
- 1800 PRINT " START DATE :";DA$
- 1810 PRINT
- 1820 INPUT "Press ENTER to continue, or T to terminate listing ",Q$
- 1830 IF LEFT$(Q$,1)="T" THEN 1850
- 1840 GOSUB 2340
- 1850 CLS:GOTO 380
- 1860 PRINT "Use ";G$;" as filename (Y/N) ";
- 1870 INPUT Q$
- 1880 IF LEFT$(Q$,1)="N" THEN INPUT "Enter new filename [.CPM] ",G$
- 1890 IF INSTR(1,G$,".")=0 AND LEN(G$)>8 THEN BEEP:PRINT "INVALID FILE NAME":GOTO1710
- 1900 IF INSTR(1,G$,".")=0 THEN G$=G$+".CPM"
- 1910 IF RIGHT$(G$,4)<>".CPM" THEN BEEP:PRINT "**** INVALID FILE NAME ****":GOTO 1880
- 1920 GOSUB 2230
- 1930 CLS:GOTO 380
- 1940 REM **** CHECKS ************************************
- 1950 E9=0:E8=0:L6=S(1):H6=F(1)
- 1960 PRINT "**** QUIET - COMPUTER THINKING - CHECKING NODES ****"
- 1970 FOR I=2 TO N
- 1980 IF S(I)<L6 THEN L6=S(I)
- 1990 IF F(I)>H6 THEN H6=F(I)
- 2000 NEXT I
- 2010 FOR I=1 TO N
- 2020 FOR J=1 TO N
- 2030 IF S(I)=L6 THEN 2090
- 2040 IF S(I)=F(J) THEN 2090
- 2050 NEXT J
- 2060 PRINT " **** FROM NODE";S(I);"of ";D$(I);" IS UNCONNECTED ****"
- 2070 E9=E9+1
- 2080 IF I MOD 20=0 THEN PRINT I;
- 2090 NEXT I
- 2100 IF E9=0 THEN PRINT " **** START NODES O.K. ****"
- 2110 FOR I=1 TO N
- 2120 FOR J=1 TO N
- 2130 IF F(I)=H6 THEN 2180
- 2140 IF F(I)=S(J) THEN 2180
- 2150 NEXT J
- 2160 PRINT " **** TO NODE";F(I);"of ";D$(I);" IS UNCONNECTED ****"
- 2170 E8=E8+1
- 2180 NEXT I
- 2190 IF E8=0 THEN PRINT " **** END NODES O.K. ****":FOR I=1 TO 500:KR$="KRISTY":NEXT
- 2200 E9=E9+E8
- 2210 IF E9<>0 THEN INPUT "Press ENTER to continue (back to menu) ",Q$
- 2220 CLS:GOTO 380
- 2230 REM **** ROUTINE TO UPDATE INPUT FILE ****
- 2240 OPEN G$ FOR OUTPUT AS #3
- 2245 IF LEN(DA$)=5 THEN DA$="0"+DA$
- 2250 WRITE #3,P$,T6$,DA$
- 2260 FOR I=1 TO N
- 2270 W=P(I)
- 2280 WRITE #3,D$(W),S(W),F(W),O2(W),D(W),A6(W),R3(W),B(W),C(W)
- 2290 NEXT
- 2300 PRINT " **** FILE ";G$;" UPDATED ****"
- 2310 F=1 'CHANGES FILED
- 2320 CLOSE #3
- 2330 RETURN
- 2340 REM **** INSPECT THE FILE INPUT ****
- 2350 GOSUB 2480 'HEADINGS
- 2360 IF A1>N OR A1<=0 THEN A1=1
- 2370 FOR I=A1 TO N
- 2380 IF (I-A1+1)/20<>INT((I-A1+1)/20) THEN 2420
- 2390 INPUT "Press ENTER to continue, or T to terminate ",Q$
- 2400 IF Q$="T" THEN 2460
- 2410 GOSUB 2480
- 2420 PRINT USING S$;I,D$(I),S(I),F(I),O2(I),D(I),A6(I),R3(I),B(I),S$(B(I)),C(I)
- 2430 NEXT I
- 2440 PRINT
- 2450 INPUT "Press ENTER to continue ",Q$
- 2460 A1=1 'RESET START OF LIST
- 2470 RETURN
- 2480 REM HEADING FOR INPUT LISTING
- 2490 PRINT H1$ 'FIRST HEADING LINE
- 2500 PRINT H2$ '2ND HEADING LINE
- 2510 PRINT H3$ 'UNDERLINE FOR HEADING
- 2520 RETURN
- 2530 IF Z2=1 THEN 2570
- 2540 PRINT "**** WHEN CHANGING INPUT, REFER TO THE ACTIVITY POSITION WHICH IS ****"
- 2550 PRINT "**** DISPLAYED IN THE INSPECTION ROUTINE. ****"
- 2560 PRINT
- 2570 INPUT " Inspect the activity file (Y/N/#) ",Q$
- 2580 IF LEFT$(Q$,1)="N" THEN 2630
- 2590 IF LEFT$(Q$,1)="Y" THEN 2620
- 2600 ON ERROR GOTO 2570
- 2610 A1=VAL(Q$)
- 2620 GOSUB 2340
- 2630 Z2=1
- 2640 RETURN
- 2650 PRINT "**** SORTING";N;"ACTIVITIES ****";
- 2660 REM **** SHELL METZNER SORT ****************************************
- 2670 J=N
- 2680 FOR I=1 TO N:P(I)=J:J=J-1:NEXT I
- 2690 M=N
- 2700 M=INT(M/2)
- 2710 IF M=0 THEN 2840
- 2720 J=1
- 2730 K=N-M
- 2740 I=J
- 2750 L=I+M
- 2760 IF S(P(I))<S(P(L)) THEN 2810
- 2770 SWAP P(I),P(L)
- 2780 I=I-M
- 2790 IF I<1 THEN 2810
- 2800 GOTO 2750
- 2810 J=J+1
- 2820 IF J>K THEN 2700
- 2830 GOTO 2740
- 2840 PRINT "**** SORT COMPLETE ****"
- 2850 PRINT "**** WRITING FILE TO DISK ****":GOSUB 2230
- 2860 PRINT "**** READING SORTED FILE ****":GOSUB 3050
- 2870 GOTO 340 'BACK TO MAIN MENU
- 2880 ON ERROR GOTO 2980
- 2890 OPEN F$+".SBC" FOR INPUT AS #1
- 2900 I=0
- 2910 I=I+1
- 2920 IF EOF(1) THEN 2950
- 2930 INPUT #1,S$(I)
- 2940 GOTO 2910
- 2950 PRINT "**** FILE ";F$;".SBC READ -";I-1;"SUBCONTRACTORS READ ****"
- 2960 NSBC=I-1
- 2970 RETURN
- 2980 PRINT "**** NO SUBCONTRACTOR FILE - CONTINUING ****":RETURN
- 2990 REM **** READING IN ALREADY CREATED INPUT FILE ******************
- 3000 INPUT "Enter the name of the input file [.CPM] ";G$
- 3010 IF G$="Q" OR G$="QUIT" THEN 370
- 3020 P=INSTR(1,G$,"."):IF P<>0 THEN F$=LEFT$(G$,INSTR(1,G$,".")-1) ELSE F$=G$
- 3030 IF LEN(F$)>8 THEN PRINT "NOT A VALID PCPM FILE - MUST END IN .CPM OR .SRT":BEEP:GOTO 3000
- 3040 ON ERROR GOTO 3190
- 3050 G$=F$+".CPM"
- 3060 OPEN G$ FOR INPUT AS #3
- 3070 INPUT #3,P$,T6$,DA$
- 3080 I=0
- 3090 I=I+1
- 3100 IF EOF(3) THEN 3140
- 3110 INPUT #3,D$(I),S(I),F(I),O2(I),D(I),A6(I),R3(I),B(I),C(I)
- 3120 IF I/10=INT(I/10) THEN PRINT I;
- 3130 GOTO 3090
- 3140 N=I-1
- 3150 M6=VAL(LEFT$(DA$,2)):D6=VAL(MID$(DA$,3,2)):Y6=VAL(RIGHT$(DA$,2))
- 3160 CLOSE #3
- 3170 PRINT " **** INPUT FILE READ ****"
- 3180 RETURN
- 3190 PRINT "**** NEW FILE ****":F=2:N=0
- 3200 INPUT "Enter Project Title (50 char) ";P$
- 3210 INPUT "Enter Time Period Units (Working , Calendar , Weeks)....";T6$
- 3220 INPUT "Enter start date in MMDDYY format (5 or 6 characters)...";DA$
- 3230 IF LEN(DA$)<5 OR LEN(DA$)>6 THEN BEEP:PRINT "INVALID DATE":GOTO 3220
- 3240 GOSUB 2880:GOTO 650
- 3250 CLS:COLOR 15,0,0:PRINT USING T1$;P$,G$:PRINT USING T2$;T6$,N,DA$:COLOR 7,0,0:RETURN
- 3260 REM PRINT SUBCONTRACTOR CODES TO RIGHT OF INPUT SCREEN
- 3270 COLOR 15,0:PRINT TAB(25);"SUBCONTRACTOR/COMMENT CODES":COLOR 7,0
- 3280 FOR K2=1 TO 16:PRINT USING W6$;K2,S$(K2),K2+16,S$(K2+16),K2+32,S$(K2+32):NEXT
- 3290 RETURN
- 3300 COLOR 15,0:LOCATE 5,4:PRINT "SUBCONTRACTOR/COMMENT CODES":COLOR 7,0
- 3310 FOR J=1 TO 16:LOCATE 5+J,1:PRINT USING W6$;J,S$(J),J+16,S$(J+16),J+32,S$(J+32):NEXT
- 3320 RETURN
-